home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / DirectShow_WinXP / VMR / VMRXcl / d3dutil.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-08  |  3.7 KB  |  85 lines

  1. //-----------------------------------------------------------------------------
  2. // File: D3DUtil.h
  3. //
  4. // Desc: Helper functions and typing shortcuts for Direct3D programming.
  5. //
  6. // Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved
  7. //-----------------------------------------------------------------------------
  8. #ifndef D3DUTIL_H
  9. #define D3DUTIL_H
  10. #include <ddraw.h>
  11. #include <d3d.h>
  12.  
  13. //-----------------------------------------------------------------------------
  14. // Miscellaneous helper functions
  15. //-----------------------------------------------------------------------------
  16. const TCHAR* D3DUtil_GetDXSDKMediaPath();
  17.  
  18. #define SAFE_DELETE(p)  { if(p) { delete (p);     (p)=NULL; } }
  19. #define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
  20.  
  21. //-----------------------------------------------------------------------------
  22. // Shortcut functions for creating and using DX structures
  23. //-----------------------------------------------------------------------------
  24. VOID D3DUtil_InitDeviceDesc( D3DDEVICEDESC7& ddDevDesc );
  25. VOID D3DUtil_InitSurfaceDesc( DDSURFACEDESC2& ddsd, DWORD dwFlags=0,
  26.                               DWORD dwCaps=0 );
  27. VOID D3DUtil_InitMaterial( D3DMATERIAL7& mtrl, FLOAT r=0.0f, FLOAT g=0.0f,
  28.                            FLOAT b=0.0f, FLOAT a=1.0f );
  29. VOID D3DUtil_InitLight( D3DLIGHT7& light, D3DLIGHTTYPE ltType,
  30.                         FLOAT x=0.0f, FLOAT y=0.0f, FLOAT z=0.0f );
  31.  
  32. //-----------------------------------------------------------------------------
  33. // D3D Matrix functions. For performance reasons, some functions are inline.
  34. //-----------------------------------------------------------------------------
  35. HRESULT D3DUtil_SetViewMatrix( D3DMATRIX& mat, D3DVECTOR& vFrom,
  36.                                D3DVECTOR& vAt, D3DVECTOR& vUp );
  37. HRESULT D3DUtil_SetProjectionMatrix( D3DMATRIX& mat, FLOAT fFOV = 1.570795f,
  38.                                      FLOAT fAspect = 1.0f,
  39.                                      FLOAT fNearPlane = 1.0f,
  40.                                      FLOAT fFarPlane = 1000.0f );
  41.  
  42. inline VOID D3DUtil_SetIdentityMatrix( D3DMATRIX& m )
  43. {
  44.     m._12 = m._13 = m._14 = m._21 = m._23 = m._24 = 0.0f;
  45.     m._31 = m._32 = m._34 = m._41 = m._42 = m._43 = 0.0f;
  46.     m._11 = m._22 = m._33 = m._44 = 1.0f;
  47. }
  48.  
  49. inline VOID D3DUtil_SetTranslateMatrix( D3DMATRIX& m, FLOAT tx, FLOAT ty,
  50.                                         FLOAT tz )
  51. { D3DUtil_SetIdentityMatrix( m ); m._41 = tx; m._42 = ty; m._43 = tz; }
  52.  
  53. inline VOID D3DUtil_SetTranslateMatrix( D3DMATRIX& m, D3DVECTOR& v )
  54. { D3DUtil_SetTranslateMatrix( m, v.x, v.y, v.z ); }
  55.  
  56. inline VOID D3DUtil_SetScaleMatrix( D3DMATRIX& m, FLOAT sx, FLOAT sy,
  57.                                     FLOAT sz )
  58. { D3DUtil_SetIdentityMatrix( m ); m._11 = sx; m._22 = sy; m._33 = sz; }
  59.  
  60. inline VOID SetScaleMatrix( D3DMATRIX& m, D3DVECTOR& v )
  61. { D3DUtil_SetScaleMatrix( m, v.x, v.y, v.z ); }
  62.  
  63. VOID    D3DUtil_SetRotateXMatrix( D3DMATRIX& mat, FLOAT fRads );
  64. VOID    D3DUtil_SetRotateYMatrix( D3DMATRIX& mat, FLOAT fRads );
  65. VOID    D3DUtil_SetRotateZMatrix( D3DMATRIX& mat, FLOAT fRads );
  66. VOID    D3DUtil_SetRotationMatrix( D3DMATRIX& mat, D3DVECTOR& vDir,
  67.                                    FLOAT fRads );
  68.  
  69. //-----------------------------------------------------------------------------
  70. // Debug printing support
  71. //-----------------------------------------------------------------------------
  72.  
  73. HRESULT _DbgOut( CHAR*, DWORD, HRESULT, TCHAR* );
  74.  
  75. #if defined(DEBUG) | defined(_DEBUG)
  76.     #define DEBUG_MSG(str)    _DbgOut( __FILE__, (DWORD)__LINE__, 0, str )
  77.     #define DEBUG_ERR(hr,str) _DbgOut( __FILE__, (DWORD)__LINE__, hr, str )
  78. #else
  79.     #define DEBUG_MSG(str)    (0L)
  80.     #define DEBUG_ERR(hr,str) (hr)
  81. #endif
  82.  
  83.  
  84. #endif // D3DUTIL_H
  85.